package com.Stash.Service;

import com.Stash.Domain.*;
import org.apache.ibatis.annotations.Param;

import java.util.Date;
import java.util.List;

public interface GeneralService {

    admins AdminLogin(admins admin);
    void  AdminPassword(admins admin);
    List<Classification> ClassificationSelectAll();
    void StorageAdd(Storage storage);
    void ProductAdd(Product product);
    Product ProductSelectName(@Param("productName") String productName,@Param("productClassificationId") Integer productClassificationId,@Param("productSpecification") Float productSpecification);
    void productUpdateInformation(Product product);
    Stash StashId(@Param("productName") Integer stashId);
    Classification classificationSelectId(@Param("classificationId") Integer classificationId);
    void StashUpdateCapacity(Stash stash);
    List<Product> ProductSelect();
    List<Product> ProductSelectLimit(Page page);
    List<Stash> StashSelectList(@Param("List") String[] List );
    Product ProductSelectId(Product product);
    void NumberAdd(NumberFn numberFn);
    NumberFn NumberSelectAll(NumberFn numberFn);
    void NumberUpdateNumber(NumberFn numberFn);
    void productUpdateClassification(Product product);
    List<Storage> StorageSelectAll(@Param("storageProductId") Integer storageProductId);
    List<Storage> StorageSelectId(@Param("storageProductId") Integer storageProductId,@Param("storageState") Integer storageState);
    Storage StorageSelect(@Param("storageId") Integer storageId);
    List<StashNumberFnProduct> StashNumberFnProductAll(@Param("stashId") Integer stashId);
    List<StashNumberFnProduct> StashNumberFnProductClassAll(@Param("stashId") Integer stashId);
    List<Storage>StorageSelectTime(@Param("TimeStart") Date TimeStart, @Param("TimeEnd") Date TimeEnd, @Param("storageStashId") Integer storageStashId);
    void DeleteProduct(Product product);

}
